A storage system typically comprises one or more storage devices for storing data. The storage system includes a storage operating system that functionally organizes the system by, inter alia, invoking storage operations in support of a storage service implemented by the system. The storage system may be implemented in accordance with a variety of storage architectures including, but not limited to, a network-attached storage environment, a storage area network, and a disk assembly directly attached to a client or host computer. The storage devices are typically disk drives organized as a disk array, wherein the term “disk” commonly describes a self-contained rotating magnetic media storage device. The term disk in this context is synonymous with hard disk drive (HDD) or direct access storage device (DASD).
The storage system may be configured to operate according to a client/server model of information delivery to thereby allow many clients to access data containers, such as files and logical units, stored on the system. In this model, the client may comprise an application, such as a database application, executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Each client may request the services of the storage system by issuing file-based and/or block-based protocol messages (in the form of packets) to the storage system over the network.
A plurality of storage systems may be interconnected to provide a storage system cluster configured to service many clients. For instance, in addition to managing/viewing components of a single storage system, clients (users) may be presented with a “global” view and single system image for components (e.g., storage devices, such as disks) of the interconnected storage systems across the cluster. In other words, a global view thus allows users to see and manage the components of interconnected storage systems from anywhere within the cluster. In addition, a plurality of clusters may be further interconnected to provide a federation of clusters to service an even greater number of clients. Such hierarchical groupings may continue to be established (e.g., interconnecting federations, etc.), and any such related storage systems are generally referred to herein as being within a “global storage environment.”
One problem that arises due to expanded global storage environments is that the related storage devices within the environment have to be uniquely identifiable within a global view of the environment. For instance, when a storage device is under management by a single storage system, a storage device name may be any configured name that is unique within the domain of the storage system. As used herein, the word “domain” refers to a collection of systems that are related. Once a plurality of storage systems are interconnected (e.g., into a cluster), however, a unique storage device name of one storage system may be a duplicate name used for a storage device in another interconnected storage system. Accordingly, when accessing the global view of available storage devices within a cluster, the duplicate names may create a conflict.
One available solution currently utilized for ensuring unique names for storage devices is to provide a centralized database that contains an index/listing of all storage devices of a particular storage environment (e.g., a cluster and/or federation, etc.). In this manner, when a storage device is named (e.g., dynamically or manually by an administrator), the centralized database may be used to determine whether any naming conflicts exist. According to one centralized database technique, a conflicted name may produce an error, thus prohibiting the duplicate name. Alternatively, in another centralized database technique, the duplicate names are allowed, but each time an access to a duplicate named storage device is attempted, the centralized database must be used to determine which of the duplicate storage devices should be accessed. Such centralized database techniques are not particularly easy to implement, especially as the storage environments continue to grow and greater numbers of storage devices must be maintained.
Internally, many storage devices may have world-wide unique identifications (IDs). However these unique IDs are often long and complex (e.g., 40-128 bytes long). As will be appreciated by those skilled in the art, such IDs may only be well suited for internal use (e.g., for software processes). Conversely, the length and possible complexity of the IDs (e.g., a string of bits or alphanumeric code) renders use of such IDs generally unsuitable for external customers (e.g., clients/users). In other words, when a client accesses a global view of the storage devices within the storage environment, and/or when utilizing the storage device names in command line interfaces (CLIs) or graphical user interfaces (GUIs), such long and complex names may be difficult to manage and maintain. In particular, where the internal IDs are unique strings of bits or alphanumeric characters, those IDs offer a client/user no meaningful mnemonic to distinguish storage devices or to recall a storage device's location within the global storage environment. For instance, in an interconnected storage environment, storage devices may be relocated within the environment, such that keeping track of the locations of the potentially large number of storage devices becomes increasingly difficult with more complex unique IDs (e.g., unique yet cumbersome storage device names).
There remains a need, therefore, for a technique for naming storage devices (e.g., disks) of a global storage environment that produces names that are not only unique within the entire storage environment, but that are human-readable and user-friendly. In particular, there remains a need for a technique for naming storage devices that is consistent among nodes of the storage environment, and is persistent (e.g., not changing between reboots or upgrades), and that does not require the use of a centralized database to maintain the storage device names.